`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2024/02/26 08:30:07
// Design Name: 
// Module Name: digital_clock
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module digital_clock(
    input clk,
    input wire[3:0] rst,

    output reg[5:0] nixie_tube 
    
);
    reg [1:0]cnt;
    reg [3:0]state;
//显示功能
display_mode u_display(
    //计时
    .clk(clk),
    //六位数码管的显示
    .tube1(nixie_tube[0]),
    .tube2(nixie_tube[1]),
    .tube3(nixie_tube[2]),
    .tube4(nixie_tube[3]),
    .tube5(nixie_tube[4]),
    .tube6(nixie_tube[5])

    );

 //切换功能

change_mode u_change(
    //复位键
    .rst(rst[0]),
    //时间状态或日期状态
    .state(state[1:0]),
    //六位数码管的显示
    .tube1(nixie_tube[0]),
    .tube2(nixie_tube[1]),
    .tube3(nixie_tube[2]),
    .tube4(nixie_tube[3]),
    .tube5(nixie_tube[4]),
    .tube6(nixie_tube[5])
);

//调整功能
adjust_mode u_adjust(
    //计时
    .clk(clk),
    //四个按键
    .rst(rst[3:0]),
    //计时20秒
    .cnt(cnt[0]),
    //调整状态
    .state(state[2:0]),
    .tube1(nixie_tube[0]),
    .tube2(nixie_tube[1]),
    .tube3(nixie_tube[2]),
    .tube4(nixie_tube[3]),
    .tube5(nixie_tube[4]),
    .tube6(nixie_tube[5])
);

//调整功能显示
adjust_display u_ad(
    //计时
    .clk(clk),
    //调整状态
    .state(state[2]),
    //0.5秒计时
    .cnt(cnt[1]),
    //六位数码管的显示
    .tube1(nixie_tube[0]),
    .tube2(nixie_tube[1]),
    .tube3(nixie_tube[2]),
    .tube4(nixie_tube[3]),
    .tube5(nixie_tube[4]),
    .tube6(nixie_tube[5])
);

//闹钟
clock_mode u_clock(
    //计时
    .clk(clk), 
    //闹钟状态
    .state(state[3]),
    
    //六位数码管的显示
    .tube1(nixie_tube[0]),
    .tube2(nixie_tube[1]),
    .tube3(nixie_tube[2]),
    .tube4(nixie_tube[3]),
    .tube5(nixie_tube[4]),
    .tube6(nixie_tube[5])
);

endmodule
